package cn.fuxi2022.module.pay.controller;

import cn.fuxi2022.model.resp.R;
import cn.fuxi2022.core.utils.JwtUtils;
import cn.fuxi2022.module.pay.service.WeChatPayService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("user/pay")
public class WeChatPayController {

    @Autowired
    private WeChatPayService weChatPayService;

    /**
     * 为社员学生生成 微信订单 方法
     *
     * @param openId  社员openid
     * @param request 获取社员id
     * @return 返回微信小程序下单所需参数 + 价格（如果价格为0，说明当前用户已经支付）
     */
    @GetMapping("/createOrder/{openId}")
    public R createOrder(@PathVariable("openId") String openId, HttpServletRequest request) {
        // 获取学生ID
        String id = JwtUtils.getMemberIdByJwtToken(request);

        return R.ok().data(weChatPayService.getOrder(openId, id));
    }

    /**
     * 支付通知API：微信支付通过支付通知接口将用户支付成功消息通知给商户
     * 支付成功后，微信服务器回调该接口，传递订单数据
     *
     * @param request 通知的订单信息
     * @return 成功回调（已经写死）
     */
    @PostMapping("/payCallback")
    public String payCallback(HttpServletRequest request) {
        return weChatPayService.payCallback(request);
    }
}
